package com.mf.ergate.web.service.auth;

import com.mf.ergate.api.auth.model.dto.*;
import com.mf.ergate.api.auth.model.vo.ResourceInfoVo;
import com.mf.framework.common.model.Page;
import com.mf.framework.common.model.Result;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * 资源信息Service层接口类
 * User: zhaoming
 * DateTime: 2019-02-12
 * To change this template use File | Settings | File Templates.
 **/
public interface ResourceInfoService{

    /**
     * 新增
     * @param resourceInfoCreateDto 资源信息新增Dto
     * @return 资源信息
     */
    ResourceInfoVo insert(ResourceInfoCreateDto resourceInfoCreateDto);
    
    /**
     * 根据唯一编号更新
     * @param resourceInfoUpdateDto 资源信息更新Dto
     * @return 执行结果
     */
    Boolean updateByUniqueNo(ResourceInfoUpdateDto resourceInfoUpdateDto);
    
    /**
     * 根据唯一编号删除(逻辑删除)
     * @param resourceInfoDeleteDto 资源信息删除Dto
     * @return 执行结果
     */
    Boolean deleteByUniqueNo(ResourceInfoDeleteDto resourceInfoDeleteDto);
    
    /**
     * 根据唯一编号查询
     * @param resourceInfoNo 资源信息编号
     * @return 资源信息
     */
    ResourceInfoVo selectByUniqueNo(String resourceInfoNo);
    
    /**
     * 根据条件查询
     * @param resourceInfoQueryDto 资源信息查询Dto
     * @return 资源信息列表
     */
    List<ResourceInfoVo> selectByCondition(ResourceInfoQueryDto resourceInfoQueryDto);

    /**
     * 根据条件查询数量
     * @param resourceInfoQueryDto 资源信息查询Dto
     * @return 数量
     */
    Integer selectCount(ResourceInfoQueryDto resourceInfoQueryDto);

    /**
     * 根据条件分页查询
     * @param page 远程分页
     * @param resourceInfoQueryDto 资源信息查询Dto
     * @return 资源信息分页列表
     */
    Page<ResourceInfoVo> selectPage(Page page, ResourceInfoQueryDto resourceInfoQueryDto);

    /**
     * 根据应用类型编码与用户编号查询
     * @param appTypeCode 应用类型编号
     * @param userNo 用户编号
     * @return 资源信息列表
     */
    List<ResourceInfoVo> selectByAppTypeCodeAndUserNo(String appTypeCode, String userNo);

    /**
     * 删除资源及相关信息(逻辑删除)
     * @param resourceInfoDeleteDto 资源信息删除Dto
     * @return 执行结果
     */
    Boolean deleteCompleteByUniqueNo(ResourceInfoDeleteDto resourceInfoDeleteDto);
}
